package co.edu.udea.xyz.bl.impl;

import java.util.List;

import org.apache.log4j.Logger;

import co.edu.udea.xyz.bl.EncuestaService;
import co.edu.udea.xyz.dao.EncuestaDAO;
import co.edu.udea.xyz.dto.Encuesta;
import co.edu.udea.xyz.util.exception.BLInversionesException;
import co.edu.udea.xyz.util.exception.XYZException;

public class EncuestaServiceImpl implements EncuestaService {
	static final Logger log = Logger.getLogger(EncuestaServiceImpl.class);
	EncuestaDAO encuestaDAO;
	
	
	public EncuestaDAO getEncuestaDAO() {
		return encuestaDAO;
	}

	public void setEncuestaDAO(EncuestaDAO encuestaDAO) {
		this.encuestaDAO = encuestaDAO;
	}

	public EncuestaServiceImpl() {
		
	}

	@Override
	public List<Encuesta> obtenerListaEncuestas()throws BLInversionesException, XYZException {
		log.info("Metodo obtener listado de encuestas de la base de datos.");
		List<Encuesta> listaEncuestas = null;
		listaEncuestas = encuestaDAO.obtener();
		return listaEncuestas;
		
	}

	@Override
	public void responderEncuesta(int idEncuesta, boolean respuesta)throws BLInversionesException, XYZException {
		Encuesta encuesta = null;
		encuesta = obtenerEncuesta(idEncuesta);
		
		encuesta.setRespuesta(respuesta);
		encuesta.setResuelta(true);
		log.info("Se respondio la encuesta");
		encuestaDAO.actualizar(encuesta); 

	}

	@Override
	public Encuesta obtenerEncuesta(int idEncuesta)throws BLInversionesException, XYZException {
		if(idEncuesta<=0){
			throw new BLInversionesException("El Id de la Encuesta no corresponde a un registro de la base de datos."+"\n Recuerde que debe ser un numero positivo.");
		}
		Encuesta encuestaBD =null;
		encuestaBD = encuestaDAO.obtener(idEncuesta);
		return encuestaBD;
	}

	@Override
	public boolean encuestaResuelta(int idEncuesta)throws BLInversionesException, XYZException {
		Encuesta encuestaBD = null;
		encuestaBD = obtenerEncuesta(idEncuesta);
		if(encuestaBD.isResuelta()){
			return true;
		}else{
			return false;
		}
	}

}
